package cn.explink.distributor.framework;

import java.io.Serializable;
import java.util.List;

public interface Condition extends Comparable<Condition>, Serializable {
	/**
	 * 最小匹配级别
	 */
	public final static int MIN_MATCH_LEVEL = 0;
	/**
	 * 最大匹配级别
	 */
	public final static int MAX_MATCH_LEVEL = 10;

	/**
	 * 最小权重
	 */
	public final static int MIN_WEIGHT = 0;
	/**
	 * 最大权重
	 */
	public final static int MAX_WEIGHT = 100;

	/**
	 *
	 * @param condition
	 * @return 匹配级别，完全匹配为true，不匹配为false，如:是否属于某区域，属于则为true，不属于则为false；
	 *
	 *
	 */
	public abstract boolean isMatched(Condition condition);

	/**
	 *
	 * @param conditionList
	 * @return 匹配级别:对于饱和度，可能的实现是饱和度越低，匹配级别越高，如饱和度为30%和70%的分单对象，前者可能匹配级别为7，后者为3
	 */
	public abstract boolean isComparableMatched(Condition orderCondition, List<Target> targetList);

	/**
	 * 获取条件的优先级
	 *
	 * @return
	 */
	public abstract int getPriority();

	/**
	 * 获取条件的权重
	 *
	 * @return
	 */
	public abstract int getWeight();

	/**
	 * 获取条件类型
	 *
	 * @return
	 */
	public abstract int getType();

}